package pe.com.empresa.utiles;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.ibatis.session.SqlSession;

public class SecuenciaUtil {

	public static String obtenerSecuencia(String nombreTablaColumna, SqlSession session) {
		
		String[] param = nombreTablaColumna.split("-");
		
		String secuencia = null;
		Connection con = session.getConnection();
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			
			//Class.forName(driver);
			//con = DriverManager.getConnection("jdbc:mysql://"+host+":"+port+"/"+database+"", username, password);
			
			try {
				
				String sql = "SELECT if(max("+param[1]+") is null,'empty',max("+param[1]+")) as secuencia from "+param[0]+" where "+param[1]+" like '"+param[2]+"%';";
				ps = con.prepareStatement(sql);
				rs = ps.executeQuery();

				while (rs.next()) {
					secuencia = rs.getString(1);
				}
				
				if(secuencia.equals("empty")){
					secuencia = param[2]+"-"+"0001";
					System.out.println(secuencia);
				}else{
					
					String[] splitSec = secuencia.split("-");
					Integer num = Integer.parseInt(splitSec[1]);
					num++;
					String correlativo = "";
					for(int i=0;i<(4-num.toString().length());i++){
						correlativo += "0";
					}
					correlativo = correlativo + num;
					secuencia = splitSec[0]+"-"+correlativo;
					System.out.println(secuencia);
					
				}
				
				
			} catch (SQLException s) {
				secuencia = "";
				System.out.println("SQL statement is not executed!");
			}finally{
				try {
					if(rs != null){rs.close();}
					if(ps != null){ps.close();}
					//if(con != null){con.close();}
				} catch (SQLException e) {
					e.printStackTrace();
				}		
			}
			
		} catch (Exception e) {
			secuencia = "";
			e.printStackTrace();
		}
		return secuencia;
	}

}
